import {
  mapGetters,
  mapMutations
} from 'vuex'

export default {
  computed: {
    ...mapGetters({
      perms: Object.freeze('getPerms'),
      isDialog: 'getIsDialog'
    })
  },
  methods: {
    ...mapMutations({
      loadingToggle: 'LOADING_TOGGLE',
      dialogToggle: 'DIALOG_TOGGLE',
      setDialog: 'SET_DIALOG',
      setSkinType: 'setSkinType',
      setLogoObj: 'setLogoObj'
    }),
    //LOADING
    loading(isShow) {
      this.loadingToggle(isShow);
    },
    //Toast提示
    // icon: 0:普通提示 1：正确的提示 2： 错误提示
    // time: 不填默认1000ms
    showToast (info, icon, time, hiddenCallback) {
      info = info ? info : '操作失败';
      icon = icon ? icon : 0;
      time = time ? time : 1000;
      this.$store.dispatch('toastToggle', {
        info: info,
        isToasting: true,
        time: time,
        icon: icon,
        onHidden: hiddenCallback
      });
    },
    // Dialog 带按钮和回调的提示框
    // info 提示的主体内容
    // btnGroup  按钮名称数组，目前只支持一个或者两个按钮，默认为： ['确认', '取消']，使用默认的按钮，那么此项可不填或者填''或[]等，只有一个按钮的时间的回调是 confirmCallback。
    // confirmCallback 点确定的回调
    // title 标题，默认为 '温馨提示'
    // cancelCallback 点击取消的回调
    // tipText 主题内容下面的提示语句
    showDialog(info, btnGroup, confirmCallback, title, cancelCallback,tipText) {
      btnGroup = btnGroup && btnGroup.length > 0 ? btnGroup : undefined;
      this.setDialog({
        contents: info,
        title: title ? title : '温馨提示',
        btnGroup: btnGroup ? btnGroup : ['确 认', '取 消'],
        confirmCallback: confirmCallback,
        cancelCallback: cancelCallback,
        tipText: tipText
      })
      this.dialogToggle(true);
    },//跳回到登录页面
    jumpToLogin() {
      window.localStorage.setItem('isLogout', 1);
      setTimeout(function () {
        this.$router.push({
          name: 'login'
        });
        window.localStorage.setItem('isAutoLogin', 0);
      }.bind(this), 10);
    },
    jumpToLoginAfterLogout() {
      window.localStorage.setItem('isLogout', 1);
      setTimeout(function () {
        //获取保存的运营商id，设置登出后的页面地址
        let id = window.sessionStorage.getItem("_carrierId");
        if (id == 'undefined' || id == '' || id == 'null') {
          this.$router.push({
            name: 'login'
          })
        } else {
          this.$router.push({
            name: 'login',
            query: {
              carrierId: id
            }
          })
        }
        window.localStorage.setItem('isAutoLogin', 0);
      }.bind(this), 10);
    },
    add0(m) {
      return m < 10 ? '0' + m : m
    },
    closePage (delayTime) {
      this.loading(true)
      let _closeFn = () => {
        document.write('')
        window.opener = null
        window.open('', '_self')
        window.close()
      }
      if (delayTime && delayTime > 0) {
        setTimeout(() => {
          _closeFn()
        }, delayTime)
      } else {
        _closeFn()
      }
    },
    toSetSession() {
      // 为了简单明了删除了对IE的支持
      // 这个调用能触发目标事件，从而达到共享数据的目的
      localStorage.setItem('getSessionStorage', Date.now());
    },
    //判断按钮是否有权限  @params perm 当前按钮的权限
    isPermmited(perm) {
      if (this.perms.indexOf(perm) > -1) {
        return true;
      }
      return false
    },
    openNewTab(path, query) {
      let obj = {
        path: path
      }
      if (query) {
        obj.query = query
      }
      const {href} = this.$router.resolve(obj);
      window.open(href, '_blank');
    }
  }
}
